'use strict';
/**
 * Copyright (c) 2017 Baidu.com, Inc. All Rights Reserved
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 *
 * @file task
 * @author baiduAip
 */

 /**
 * task类
 * 描述调用接口任务
 *
 * @constructor
 */
class Task {
    constructor(fn, param, promise, clientContext) {
        this.fn = fn;
        this.param = param;
        this.promise = promise;
        this.clientContext = clientContext;
    }
    setDevAuthOK() {
        this.fn.bind(this.clientContext)(this.param)
            .then(this.promise.getResolveCb(), this.promise.getRejectCb())
            .catch(this.promise.getCatchCb());
        this.promise = null;
    }
    setDevAuthFail(errorCause) {
        this.promise.resolve(errorCause);
        this.promise = null;
    }
}

Task.EVENT_DATA = 'data';

module.exports = Task;
